package com.company.greedy;

import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;

/**
 * @author jrue
 * @description https://leetcode-cn.com/problems/fair-candy-swap/
 * @date 2019/11/15 9:11
 *
 * 爱丽丝和鲍勃有不同大小的糖果棒：A[i] 是爱丽丝拥有的第 i 块糖的大小，B[j] 是鲍勃拥有的第 j 块糖的大小。
 *
 * 因为他们是朋友，所以他们想交换一个糖果棒，这样交换后，他们都有相同的糖果总量。（一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。）
 *
 * 返回一个整数数组 ans，其中 ans[0] 是爱丽丝必须交换的糖果棒的大小，ans[1] 是 Bob 必须交换的糖果棒的大小。
 *
 * 如果有多个答案，你可以返回其中任何一个。保证答案存在。
 *
 *
 */
public class FairCandySwap {

    public static int sum(int[] nums) {
        int num = 0;
        for (int i = 0; i < nums.length; i++) {
            num += nums[i];
        }
        return num;
    }

    public static void main(String[] args) {
        int[] ints = fairCandySwap(new int[]{1, 1}, new int[]{2, 2});
        System.out.println(ints[0]);
        System.out.println(ints[1]);
    }

    public static int[] fairCandySwap(int[] A, int[] B) {
        int sumA = sum(A);
        int sumB = sum(B);

        Set<Integer> set = new TreeSet<>();
        for (int i = 0; i < B.length; i++) {
            set.add(B[i]);
        }

        for (int i = 0; i < A.length; i++) {
            int y = ((sumB - sumA )/ 2) + A[i];
            if (set.contains(y)) return new int[]{A[i],y};
        }

        return new int[]{};
    }

}
